package br.uvv.sao.rn;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import br.uvv.sao.dao.ProfessorDAO;
import br.uvv.sao.domain.Professor;
import br.uvv.sao.enums.SituUsuario;

public class ProfessorRN implements Serializable {
	
	private static final long serialVersionUID = -6010133091810637503L;
	
	private ProfessorDAO professorDAO = new ProfessorDAO();
	
	public String gerarMatricula(){
		String matricula = "PR";
		matricula += new SimpleDateFormat("yyMM").format(new Date());
		Long tempInt = (professorDAO.listarUltimoIndice() + 1);
		String tempStr = tempInt.toString();
		while (tempStr.toString().length()<5){
			tempStr = "0" + tempStr; 
		}
		matricula += tempStr;
		return matricula;
	}
	
	public Professor buscaPorMatricula(String matricula){
		return null;
	}
	
	public Boolean salvar(Professor professorInstance){
		Long codigo = professorInstance.getId();
		if (codigo == null || codigo == 0){
			professorInstance.setSituacao(SituUsuario.Ativo);
			professorInstance.setPerfil(professorDAO.getPerfilProfessor());
			if(this.professorDAO.salvar(professorInstance)){
				return true;
			}else{
				return false;
			}
		} else {
			if(this.professorDAO.atualizar(professorInstance)){
				return true;
			}else{
				return false;
			}
		}
	}
	
	public Boolean verificarEmail(String email, Professor professorInstance, Boolean editando){
		Integer retorno = professorDAO.findByObjectCount("email", email);
		if (editando){
			if (retorno>1)
				return false;
			else
				return true;
		}
		if (retorno>0){
			return false;
		}
		return true;
	}
	
	public Boolean verificarNome(String nome, Professor professorInstance, Boolean editando){
		Integer retorno = professorDAO.findByObjectCount("nomeCompleto", nome);
		if (editando){
			if (retorno>1)
				return false;
			else
				return true;
		}
		if (retorno>0){
			return false;
		}
		return true;
	}
	
	public Boolean verificarLogin(String login, Professor professorInstance, Boolean editando){
		Integer retorno = professorDAO.findByObjectCount("email", login);
		if (editando){
			if (retorno>1)
				return false;
			else
				return true;
		}
		if (retorno>0){
			return false;
		}
		return true;
	}
	
	public void excluir(Professor professorInstance){
		this.professorDAO.excluir(professorInstance);
	}
	
	public List<Professor> listar(String nome, String matricula){
		return this.professorDAO.listar(nome, matricula);
	}
}
